
//验证封装
var verification = {

	main:function(){
		var dom = this;

		dom.bindEvent();

		$(".regist_form_head div").click(function(){
			$(".regist_form_head div").removeClass("border_color");
			$(this).addClass("border_color");
		});

		//注册点击
		$(".regist_fun").click(function(){
			var result = dom.registValidation();
			result&&(location.href = "index.html");
		});
		
		$(".noregist_fun").click(function(){
			layer.alert("请先同意集成规范");
		});
		
		//点击“同意集成规范”
		$(".regist_tip input").click(function(){
			if($(this).prop("checked")){
				$(this).prop("checked",true);
				$(".noregist_fun").hide();
				$(".regist_fun").show();
			}else{
				$(this).removeAttr("checked");
				$(".noregist_fun").show();
				$(".regist_fun").hide();
			}
		})
	},
	

	//绑定表单失焦的验证方法以及获取验证码
	bindEvent:function(){
		
		//用户名，企业名是否存在
		$(".check_name_fun").blur(function(){
			var name = $(this).val();
			name&&check_name(name);
			function check_name(name){
				
				//验证逻辑
				global.isExistence=0;//用户名可用
			}
		}),
		
		
		//手机号是否存在
		$("#mobile").blur(function(){
			var mobile = $(this).val();
			mobile&&check_phone(mobile);
			function check_phone(mobile){
				
				//验证逻辑
				global.zhi=2;//手机号可以注册
			}
		}),
		
		//判断验证码是否正确
		$("#btnCodes").blur(function(){
			var vercode = $(this).val();
			vercode&&check_vercode(vercode);
			function check_vercode(vercode){
				if (vercode == global.random) {
					global.code=0;//验证码正确
				} else {
					layer.alert("验证码错误");
					global.code=1;
				}
			}
		}),
		
		
		//获取验证码
		$("#btnCode").click(function(){
			var mobilestr = $("#mobile").val();
			if (!mobilestr) {
				layer.alert("手机号码为空！");
				return;
			}else{
				if(!telReg.test(mobilestr)){
					layer.alert('手机号格式不正确！', 3);
					return;
				}	
				global.phone = mobilestr;//用于提交时验证，确保提交时用户没有修改获取验证码的手机号
				var random = getRandom();
				sendSmsCode(mobilestr,random);
			}
			
			//生成四位随机数
			function getRandom() {
				var rnd="";
				for ( var i = 0; i < 4; i++) {
					rnd += Math.floor(Math.random() * 10);
				}
				console.log(rnd);
				return rnd;
			}
			
			//发送验证码
			function sendSmsCode(mobilestr,random) {

				global.random = random;//便于验证码失焦时判断
				layer.alert("发送成功！");
				$("#btnCode").hide();
				$(".count_time").addClass("inline_show");
				global.count = 60;
				getNumber();//验证码读秒
			}
			
			//验证码读秒
			function getNumber() {
				global.count--;
				if (global.count > 0) {
					$(".count_time").text(global.count + "秒后重新获取");
					setTimeout(getNumber, 1000);
				} else {
					$("#btnCode").show();
					$(".count_time").hide();
					if (global.count == 0) {
						global.count = 60;
					}
				}
			}
		})
		
	},

	//提交时验证
	registValidation:function(){
		
		//判断用户名是否为空
		var personVla =$('#name').val();
		if(!personVla){
			layer.alert('用户昵称不能为空！', 3);
			return false;
		}
		if(global.isExistence==1){
			layer.alert('用户昵称已存在！', 3);
			return false;
		}
		
		//判断手机号
		var phoneVla = $('#mobile').val();
		if(!phoneVla){
			layer.alert('手机号不能为空！', 3);
			return false;
		}else{	
			if(!telReg.test(phoneVla)){
				layer.alert('手机号格式不正确！', 3);
				return false;
			}
		}
		if(global.zhi==1){
			layer.alert('手机号已注册！', 3);
			return false;
		}
		
		//判断验证码
		var btnCodes = $('#btnCodes').val();
		if(!btnCodes){
			layer.alert('验证码不能为空！', 3);
			return false;
		}
		if(global.code==1){
			layer.alert('验证码不正确！', 3);
			return false;
		}
		if(phoneVla!=global.phone){
			layer.alert('手机号与验证码不匹配！', 3);
			return false;
		}
		
		//判断密码
		var password = $('#password').val();
		if(!password){
			layer.alert('密码不能为空！', 3);
			return false;
		}else {
			if(password.length<="5" || password.length>="19"){
				layer.alert('请设置密码长度为6-18位！', 3);
				return false;
			}
		}
		
		//判断确认密码
		var repassword = $('#repassword').val();
		if(repassword!=password){
			layer.alert('两次密码输入不一致！', 3);
			return false;
		}

		return true;
	}

};

//验证密码强度
var verification_strength = {
		
	main : function(){

		//pwd事件触发：当用户放开键盘或密码输入框失去焦点时,根据不同的级别显示不同的颜色   
	    $("#password").keyup(function() {  
	        pwStrength(this.value);  
	    });

	    //根据pwd强度改变css样式  
	    function pwStrength(pwd) {  
	        if (pwd == null || pwd == '') {  
	            return;
	        }else {
	            S_level = checkStrong(pwd);
	            $(".password_weak").removeClass("password_weak_color");
	            $(".password_in").removeClass("password_in_color");
	            $(".password_strong").removeClass("password_strong_color");
	            switch (S_level) {  
	  
	                case 0: //低  
	                	$(".password_weak").addClass("password_weak_color");
	                    break;  
	                case 1: //中  
	                	$(".password_in").addClass("password_in_color");  
	                    break;  
	                case 2: //高  
	                	$(".password_strong").addClass("password_strong_color"); 
	                    break;  
	                default:  
	                	$(".password_weak").addClass("password_weak_color");  
	            }  
	        }  
	        return;  
	    };

		function CharMode(iN) {  
	        if (iN >= 48 && iN <= 57) //数字   
	            return 1;  
	        if (iN >= 65 && iN <= 90) //大写字母   
	            return 2;  
	        if (iN >= 97 && iN <= 122) //小写   
	            return 4;  
	        else  
	            return 8; //特殊字符   
	    };
	    
	    //计算出当前密码当中一共有多少种模式   
	    function bitTotal(num) {  
	        modes = 0;  
	        for (i = 0; i < 4; i++) {  
	            if (num & 1) modes++;  
	            num >>>= 1;  
	        }  
	        return modes;  
	    };
	     
	    //返回密码的强度级别   
	    function checkStrong(sPW) {  
	        Modes = 0; //输入的字符种类有几种如：a1两种aA_d三种  
	        for (i = 0; i < sPW.length; i++) {  
	            //测试每一个字符的类别并统计一共有多少种模式.   
	            Modes |= CharMode(sPW.charCodeAt(i));  
	        }  
	        Modes = bitTotal(Modes); //由几种字符组成  
	        var pwdLength = sPW.length; //密码长度  
	        var level = 0; //密码强度级别  
	        if (pwdLength < 8 && Modes <= 2)  
	            level = 0;  
	        if ((pwdLength < 10 && Modes >= 3) || (pwdLength >= 8 && Modes == 2))  
	            level = 1;  
	        if (pwdLength >= 10 && Modes >= 3)  
	            level = 2;  
	        return level;  
	    };
	    
	}
};